/**
 * 路由设计规则：
 * 1. 例如：index/Index，shop/Index以index结尾的，path和name默认去除index
 * 2. 例如：shop/List，默认生成name为shop_list(如果结尾为index，例如shop/index则是shop)，path为/shop/list
 * 3. 填写后不会自动生成
 */
const routes = [
    {
        // redirect: {
        //     name: 'index'
        // },
        component: 'Layout',
        meta: {
            title: '后台主页面',
            requiresAuth: true
        }
    },
    {
        component: 'user/Login',
        meta: {
            title: '用户登录页'
        }
    },
    {
        path: '*',
        redirect: (to, from, next) => {
            return {
                name: 'user_login'
            };
        }
    }
];

// 生成路由详细信息
let getRoutes = () => {
    // 自动生成路由
    createRoutes(routes);
    return routes;
};

// 自动创建路由
function createRoutes(arr) {
    for (let i = 0; i < arr.length; i++) {
        // 没有component直接返回
        if (!arr[i].component) return;

        // 去除index
        let val = getVal(arr[i].component);

        // 自动生成path
        if (val == 'Layout') {
            arr[i].path = arr[i].path || `/`;
        } else {
            arr[i].path = arr[i].path || `/${val.toLowerCase()}`;
        }

        // 自动生成name
        arr[i].name = arr[i].name || val.replace(/\//g, '_').toLowerCase();

        // 自动生成component
        let compFun = import(`@/views/${arr[i].component}`);
        arr[i].component = () => compFun;

        // 查看children进行递归
        if (arr[i].children && arr[i].children.length > 0) {
            createRoutes(arr[i].children);
        }
    }
}

// 去除index
function getVal(str) {
    // str = /login/Index
    // 获取最后一个/的索引
    let index = str.lastIndexOf('/');

    // 获取最后一个/后面的值
    let val = str.substring(index + 1);

    if (val.toLowerCase() == 'index') {
        return str.substring(index, -1);
    }
    return str;
}

export default getRoutes();
